package com.gaofans.nrpc.common.processor;

import java.io.Serializable;
import java.util.Map;

/**
 * @author GaoFans
 */
public interface EventProcessor<T,E extends Serializable> {

    /**
     * 注册监听器
     * @param id
     * @param listener
     */
    void register(E id,EventListener<T> listener);

    /**
     * 注销监听器
     * @param id
     * @return
     */
    EventListener<T> unRegister(E id);

    /**
     * 查找监听器
     * @param id
     * @return
     */
    EventListener<T> get(E id);

    /**
     * 获取全部
     * @return
     */
    default Map<E,EventListener<T>> all(){
        throw new IllegalStateException("不允许获取");
    }
}
